﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Projektarbete
{
    /// <summary>
    /// OBS! ABSTRACT!
    /// </summary>
    abstract class Equip
    {
        protected string name;
        public string Name
        {
            get { return name; }
        } //Get
        protected string type;
        public string Type
        {
            get { return type; }
        } //Get

        protected int value; //TODO

        protected ushort defence;
        public ushort Defence
        {
            get { return defence; }
        } //Get

        protected ushort strength;
        public ushort Strength
        {
            get { return strength; }
        } //Get
        protected ushort intelligence;
        public ushort Intelligence
        {
            get { return intelligence; }
        } //Get

        public Equip(ushort defence, ushort strength, ushort intelligence)
        {
            this.defence = defence;

            this.strength = strength;
            this.intelligence = intelligence;
        }
    }

    class Empty : Equip
    {
        public Empty()
            : base(0, 0, 0)
        {
            name = "Nothing";
            type = "Empty";
        }
    }

    class Head : Equip
    {
        public Head(string name, ushort defence, ushort strength, ushort intelligence)
            : base(defence, strength, intelligence)
        {
            this.name = name;
            type = "Head";
        }
    }

    class Torso : Equip
    {
        public Torso(string name, ushort defence, ushort strength, ushort intelligence)
            : base(defence, strength, intelligence)
        {
            this.name = name;
            type = "Torso";
        }
    }

    class Necklace : Equip
    {
        public Necklace(string name, ushort defence, ushort strength, ushort intelligence)
            : base(defence, strength, intelligence)
        {
            this.name = name;
            type = "Necklace";
        }
    }

    class LeftHand : Equip
    {
        public LeftHand(string name, ushort defence, ushort strength, ushort intelligence)
            : base(defence, strength, intelligence)
        {
            this.name = name;
            type = "Left hand";
        }
    }

    class RightHand : Equip
    {
        public RightHand(string name, ushort defence, ushort strength, ushort intelligence)
            : base(defence, strength, intelligence)
        {
            this.name = name;
            type = "Right hand";
        }
    }

    class LeftFoot : Equip
    {
        public LeftFoot(string name, ushort defence, ushort strength, ushort intelligence)
            : base(defence, strength, intelligence)
        {
            this.name = name;
            type = "Left foot";
        }
    }

    class RightFoot : Equip
    {
        public RightFoot(string name, ushort defence, ushort strength, ushort intelligence)
            : base(defence, strength, intelligence)
        {
            this.name = name;
            type = "Right foot";
        }
    }

    class Legs : Equip
    {
        public Legs(string name, ushort defence, ushort strength, ushort intelligence)
            : base(defence, strength, intelligence)
        {
            this.name = name;
            type = "Legs";
        }
    }

    class Ring : Equip
    {
        public Ring(string name, ushort defence, ushort strength, ushort intelligence)
            : base(defence, strength, intelligence)
        {
            this.name = name;
            type = "Ring";
        }
    }
}
